package com.lqk.mediator.smarthouse;

/**
 * 基本介绍
 * 	1) 中介者模式（Mediator Pattern），用一个中介对象来封装一系列的对象交互。
 * 	中介者使各个对象不需要显式地相互引用，从而使其耦合松散，而且可以独立
 * 	地改变它们之间的交互
 * 	2) 中介者模式属于行为型模式，使代码易于维护
 * 	3) 比如MVC模式，C（Controller控制器）是M（Model模型）和V（View视图）的中
 * 	介者，在前后端交互时起到了中间人的作用
 *
 * 中介者模式的注意事项和细节
 * 	1) 多个类相互耦合，会形成网状结构, 使用中介者模式将网状结构分离为星型结构，
 * 	进行解耦
 * 	2) 减少类间依赖，降低了耦合，符合迪米特原则
 * 	3) 中介者承担了较多的责任，一旦中介者出现了问题，整个系统就会受到影响
 * 	4) 如果设计不当，中介者对象本身变得过于复杂，这点在实际使用时，要特别注意
 */
public class ClientTest {

	public static void main(String[] args) {
		
		Mediator mediator = new ConcreteMediator();
		Alarm alarm = new Alarm(mediator, "alarm");
		CoffeeMachine coffeeMachine = new CoffeeMachine(mediator,
				"coffeeMachine");
		Curtains curtains = new Curtains(mediator, "curtains");
		TV tV = new TV(mediator, "TV");
		alarm.SendAlarm(0);
		coffeeMachine.FinishCoffee();
		alarm.SendAlarm(1);
	}

}
